django - 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})
解决方案
看起来您正在处理预先存在的示例代码,其中LIST_CHOICES
定义为静态且不可更改的值。(PEP8 标准将所有大写的变量声明为永远不应该改变的东西)
您需要首先为部门创建一个新模型,并使用多对多关系将其与 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/
它涵盖了您需要通过键入它们来学习的许多基础知识。
推荐阅读
- android - 如何从 Android 应用程序进行网站搜索
- amazon-web-services - 我可以将 AWS Neptune 连接到 Tableau Desktop 吗?
- javascript - 从 DIV 获取 IMG 链接返回 null
- excel - 如何找出 vlookup 结果的单元格地址
- mysql - 在视图中使用“CAST (1 AS BIT)”
- python - 使用后我应该摆脱光标对象吗?
- c# - 如何从同一解决方案中另一个项目中的 ASP.NET 页面引用到 MVC 页面
- react-native - “绝对”定位视图中的 TouchableOpacity
- model - 无法使用 UUID() 解析 Json 名称
- sql - 仅更新不为空的列