簡體   English   中英

Django:如何使用具有一對多關系的兩個模型創建一個基於 Class 的視圖?

[英]Django: How to create one Class Based view with two models which have one-to-many relationship?

我希望用戶能夠創建包含多個圖像的帖子(這就是我有單獨模型的原因)。 我如何使用基於 class 的視圖和一個模板來做到這一點?

模型.py

class UserPost(models.Model):
     title=models.CharField(max_length=255)
     text=models.TextField()

class Image(models.Model):
     user_post = models.ForeignKey(UserPost, on_delete=models.CASCADE)
     image = models.ImageField(upload_to='images/')

如果有人為此苦苦掙扎,我以這種方式解決了它。

forms.py

class UploadPostForm(ModelForm):
    class Meta:
        model=myModels.UserPost
        fields=['title','text','category','is_used','price']

class UploadImages(ModelForm):
    class Meta:
        model=myModels.Image
        fields=['image']

視圖.py

class CompletePost(LoginRequiredMixin,View):
def get(self, request, *args, **kwargs):
    post_form=myForms.UploadPostForm()
    image_form=myForms.UploadImages()
    return render(request,'shop/create_post.html',{'post_form':post_form,'image_form':image_form})
def post(self, request, *args, **kwargs):
    post_form=myForms.UploadPostForm(request.POST,request.FILES)
    image_form=myForms.UploadImages(request.POST)
    if post_form.is_valid() and image_form.is_valid():
        user_post_v=post_form.save(commit=False)
        images=image_form.save(commit=False)
        user_post_v.user_id = self.request.user
        user_post_v.save()
        for image in request.FILES.getlist('image'):
            image_obj = shopModels.Image()
            image_obj.user_post = user_post_v
            image_obj.image = image
            image_obj.save()
        transaction.commit()
        return redirect('home')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM