您好我正在django做我的第一个项目,即创建reddit clone。我不确定如何设置我的模型,特别是设置标记部分。像reddit一样,我希望用户能够标记他们创建的社区。我找到了许多标记应用程序,使您可以标记为管理员制作的类别。但我希望我的用户标记他们制作的类别。
class Post(models.Model):
created_at = models.DateTimeField(auto_now_add = True)
title = models.CharField(max_length = 100)
content = models.TextField()
url = models.URLField(max_length=250, blank=True)
image = models.ImageField(upload_to="images", blank=True, null=True)
views = models.IntegerField(dfault=0)
likes = models.IntegerField(dfault=0)
class Category(models.Model):
name = models.CharField(max_length=100, unique=True)
答案 0 :(得分:0)
您应该在Post模型中添加多对多关系
class Post(models.Model):
created_at = models.DateTimeField(auto_now_add = True)
title = models.CharField(max_length = 100)
content = models.TextField()
url = models.URLField(max_length=250, blank=True)
image = models.ImageField(upload_to="images", blank=True, null=True)
views = models.IntegerField(dfault=0)
likes = models.IntegerField(dfault=0)
# Add a m2m field named categories
categories = models.ManyToManyField(Category)
通过这种方式,您可以使用 -
获取帖子中所有相关类别的列表post_object.categories.all()
对于添加标签的表单,您可以使用 -
class TagForm(forms.Form):
tags = forms.MultipleChoiceField(
widget=forms.SelectMultiple,
choices=tag_options,
required=True)
其中tag_options是元组的元组,包含从Category.objects.all()
获得的各种标签
答案 1 :(得分:0)
根据我的理解,你需要的是理解Many2Many的关系。 帖子可以有很多类别,A类别会有很多帖子。
categories = models.ManyToManyField(
Category)
进一步阅读read this .. :))