如何使用CreateView在模型中输入ForeginKey值

时间:2019-07-02 23:26:24

标签: django django-models django-forms django-views django-2.2

我正在创建一个Wiki,需要在称为修订版的模型中输入值。该表有一个指向Wikipage的前键。 我的问题是我无法在修订模型中插入值。 我曾尝试像输入用户时一样使用def form_valid(self, form),但没有任何运气。

Models.py

class Wikipage(models.Model):
    title = models.CharField(max_length=100)
    date_created = models.DateTimeField('Created', auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = "Wikipages"


class Revision(models.Model):
    wikipage = models.ForeignKey(Wikipage, null=True, on_delete=models.CASCADE, related_name='revisions')
    content = models.TextField('Content')
    author = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
    last_edit = models.DateTimeField('Last Edited', auto_now=True)
    comment = models.TextField('Comment', blank=True)

    class Meta:
        verbose_name = 'Revision'
        verbose_name_plural = 'Revisions'
        ordering = ['-last_edit']
        get_latest_by = ['last_edit']

    def __str__(self):
        return self.content

View.py

Class WikipageCreateView(CreateView):
    template_name = 'wiki/wikipageform.html'
    model = Wikipage
    fields = ['title']

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

使用{{form.as_p}}和所有必要的内容,模板尽可能简单。

0 个答案:

没有答案