Отправка необработанных html-форм без использования экземпляров внешнего ключа в django - PullRequest
0 голосов
/ 22 сентября 2019

models.py

class Link_list(models.Model):
    link_id=models.AutoField(primary_key=True)
    link_episode_season_id=models.ForeignKey(Episode_list,on_delete=models.PROTECT)
    link_user_id=models.ForeignKey(User, on_delete=models.PROTECT,blank=True)
    name=models.CharField(max_length=50)
    link=models.TextField()
    upvote=models.PositiveIntegerField(default=0)
    downvote=models.PositiveIntegerField(default=0)
    views=models.PositiveIntegerField(default=0)
    link_type=models.ForeignKey(Content_type_list,on_delete=models.PROTECT)
    subtitle=models.ManyToManyField(Subtitle_list)
    link_created_at=models.DateTimeField(default=timezone.now)
    quality=models.ForeignKey(Quality_list,on_delete=models.PROTECT)

    def __str__(self):
        return f'{self.name}'
    class Meta:
        verbose_name_plural='Link'

forms.py

 class Create_Link_form(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '','maxlength':50}))
    link = forms.CharField(widget=forms.Textarea(attrs={'placeholder': ''}))
    link_type = forms.ModelChoiceField(queryset=Content_type_list.objects.all())
    quality = forms.ModelChoiceField(queryset=Quality_list.objects.all())

views.py

@login_required
def Link_create(request):
    form=Create_Link_form(
            data=(request.POST or None),
            files=(request.FILES or None),
        )
    if form.is_valid():
        if request.user.is_active:
            r=Link_list.objects.create(
                name=request.POST["name"],
                link=request.POST["link"],
                link_type=request.POST["link_type"],
                quality=request.POST["quality"],
                link_episode_season_id=x,
                link_user_id=request.user,
                )
            r.save()
            messages.success(request, f'Season has been created!')
        else:
            messages.warning(request, f'Please Login to create movies!')
    else:
        print(form.errors)
    context={
        "form":form,
        "form_name":url
    }   
    return render(request,'movies_list/link_list_create.html',context)

ИСПОЛЬЗОВАНИЕ МОДЕЛЕЙ. Форму это работает просто отлично. Но для создания пользовательского поля ManytoMany я реализовал с помощью пользовательского formField.Views, чтобы получить все данные, необходимые для создания объекта ссылки. Но я не знаю, как создавать объекты ссылок без использования внешних экземпляров..

ValueError at / link / new / Невозможно назначить «1»: «Link_list.link_type» должен быть экземпляром «Content_type_list».

...