我希望用户能够从下拉菜单中创建项目。我对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})
答案 0 :(得分:1)
您似乎正在处理现有示例代码,其中LIST_CHOICES
被定义为静态且不可更改的值。 (PEP8标准将所有大写字母中的变量声明为永远不变的东西)
您首先需要为部门创建一个新模型,并使用ManyToMany关系将其与Post and 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/
它涵盖了许多您需要输入的基本知识。