请帮帮我。我是Django新手,不能理解以下事情-我有CreateView的子类来创建评论。我想创建一个项目,人们可以留下他们的评论和附加文件(图像)到这个评论。一个应该有可能附加尽可能多的图像,他想一个形式与文字评论。我在网上发现了一个决定,我需要使用2个模型-1个用于文本注释的模型+1个用于图像的单独模型。是这样吗?在
在我的视图.py通过CreateView的子类。如何将新的独立图像模型与我的CreateView连接起来?在
models.py
class Descriptions(models.Model):
…
city = models.ForeignKey(Cities, on_delete=models.CASCADE)
description = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.DO_NOTHING)
…
class Description_Photos(models.Model):
image = models.ImageField(upload_to='images/', blank=True)
description = models.ForeignKey(Descriptions, on_delete=models.CASCADE, related_name='photos')
forms.py
class DescriptionsForm(forms.ModelForm):
class Meta:
model = Descriptions
exclude = []
widgets = {'description': forms.Textarea(attrs={'cols':90})}
class Photos_form(forms.Form):
photos = forms.FileField(widget=forms.FileInput(attrs={'multiple': True}))
views.py
class DescriptionCreate(CreateView):
model = Descriptions
form_class = DescriptionsForm
template_name = 'countries/new_description.html'
def get_success_url(self):
return reverse('countries:descr', args=[self.kwargs['country_id'], self.kwargs['city_id']])
def get_context_data(self, **kwargs):
self.city = get_object_or_404(Cities, id=self.kwargs['city_id'])
kwargs['city'] = self.city
return super().get_context_data(**kwargs)
def form_valid(self, form):
form.instance.city = get_object_or_404(Cities, id=self.kwargs['city_id'])
form.instance.owner = self.request.user
messages.success(self.request, 'Your post has been added, thank you')
return super().form_valid(form)
所以我的问题是我应该写什么视图.py对于class Photos_form(forms.Form):
?如何连接这个类和我的class DescriptionCreate(CreateView)
?在
我在相同的情况下使用表单集https://docs.djangoproject.com/en/2.0/topics/forms/formsets/
为图像模型声明窗体集
模板
^{pr2}$我试着把我的自定义代码改写成你的变体。 我想在您的示例中将
self.city
声明为创建模型实例是个坏主意:Django自动创建self.object
相关问题 更多 >
编程相关推荐