Django FormMixin 和外键

问题描述

我对 Django 很陌生。

这是我的问题:

  • 我已经能够创建一个表单,以便让用户创建一个 客户“索引卡”。
  • 我已经能够创建一个 DetailView 来呈现用户输入的元素
  • 我已经能够在 DetailView(我使用 FormMixin)中创建一个额外的表单,让用户添加与其客户相关的其他元素。

但是,当我签入管理员时,我应该将附加元素链接到客户端(我称之为集合)的 Foreign_key 仍然是空的。

我想问题来自于我第一次创建客户端,第二次尝试从第二个表单创建新数据的事实。但我仍然不知道如何在新数据和现有客户端之间创建链接。 有些事情我不明白,我做错了......欢迎任何帮助!

模型.py:

class Collection(models.Model):
    name = models.CharField(max_length=300)
    image = models.ImageField(default='tgt_default.jpg',upload_to='tgt_pics')
    description = models.TextField(null=True)
    created_by = models.ForeignKey(User,related_name="collections",blank=True,null=True,on_delete=models.SET_NULL)

    def __str__(self):
        return str(self.id)

    def save(self,*args,**kwargs):
        super(Collection,self).save(*args,**kwargs)

        img = Image.open(self.tgt_image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300,300)
            img.thumbnail(output_size)
            img.save(self.tgt_image.path)


class ImportantFacts(models.Model):
    collection_important_facts = models.ForeignKey(Collection,related_name="has_important_facts",on_delete=models.CASCADE,null=True)
    note = models.TextField(max_length=400)

forms.py

class ImportantFactsForm(forms.ModelForm):
    class Meta:
        model = ImportantFacts
        fields = ['note']

views.py

class CollectionDetail(LoginrequiredMixin,FormMixin,DetailView):
    model = Collection
    form_class = ImportantFactsForm
    template_name = 'taskflow/collection_detail.html'
    success_url = None


    def get_context_data(self,**kwargs):
        context = super(CollectionDetail,self).get_context_data(**kwargs)
        context['important_facts'] = ImportantFactsForm()
        context['facts_list'] = ImportantFacts.objects.all()
        return context


    def post(self,request,**kwargs):
        form = ImportantFactsForm(request.POST)

        if form.is_valid():
            new_fact = form.save()
            return redirect('taskflow:homepage')
        else:
            return redirect('taskflow:collection_all')

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...