django用户创建了下拉列表项

我希望用户能够从下拉菜单中创建项目.我对
django很新,所以任何帮助都表示赞赏.目前我只是保存他们想要添加的项目的标题,并将一些虚拟数据作为项目.

LIST_CHOICES = (
('green','GREEN'),
)

class Listing(models.Model):
    title = models.CharField(max_length=250)

    def get_absolute_url(self):
        return reverse('project-create')

有没有办法可以从列表模型中获取输入标题并将其显示为Post的下拉项?

 class Post(models.Model):
    department = models.CharField(max_length=100, choices=LIST_CHOICES, default='green')
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)


    def get_absolute_url(self):
        return reverse('project-detail', kwargs={'pk': self.pk})

《django用户创建了下拉列表项》

最佳答案 看起来您正在使用预先存在的示例代码,其中LIST_CHOICES被定义为静态且不可更改的值. (PEP8标准将所有大写的变量声明为永远不会改变的东西)

您需要首先为部门创建一个新模型,然后使用ManyToMany关系将其与Post和Listing绑定在一起:


class Listing(models.Model):
    title = models.CharField(max_length=250)

    def get_absolute_url(self):
        return reverse('project-create')



class Post(models.Model):
    department = models.ManyToManyField(
        to='Listing',
        blank=True
    )
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def get_absolute_url(self):
        return reverse('project-detail', kwargs={'pk': self.pk})


class Department(models.Model):
    listing = models.ForeignKey(Listing, on_delete=models.DO_NOTHING)
    post = models.ForeignKey(Post, on_delete=models.DO_NOTHING)
    name = models.CharField(max_length=140)

    def __str__(self):
        return "{}".format(self.name)

    class Meta:
        unique_together = ('listing',
                           'post',
                           'name')

Django起初只是很棘手,但是一旦你明白这一点,它就会变得更加顺畅.当我刚接触它时,我作为初学者所做的最有成效的事情就是通过一本教科书来指导你如何从头到尾开发博客/ cms.我发布了一个PDF链接,但它是一个更旧版本的Django.

尝试与本书一起编码:
https://books.agiliq.com/projects/djenofdjango/en/latest/

它涵盖了许多你需要通过输入来学习的基础知识.

点赞