问题描述
我对 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 (将#修改为@)