如何解决如何在Django模型中具有字段列表?
from django.db import models
class Article (models.Model):
author = models.ForeignKey('Users.User')
title = models.CharField()
text = models.TextField()
stars = [
models.IntegerField(),# 0 stars
models.IntegerField(),# 1 stars
models.IntegerField(),# 2 stars
models.IntegerField(),# 3 stars
models.IntegerField(),# 4 stars
models.IntegerField(),# 5 stars
]
但是问题是,星域不会在000x_initials.py中被识别。
我该怎么办?
我想这样使用它:
if request.method == 'POST':
post_data = request.post
star = int(post_data['star'])
article.stars[star] += 1
article.save()
解决方法
如果您将POSTGRESQL用作DBMS,则可以使用ArrayField:
from django.contrib.postgres.fields import ArrayField
在您的模型上:
stars = ArrayField(models.IntegerField(),size=6)
这将创建6个长度的数组,也可以创建多维数组。
其他尝试创建自定义字段的方法。
,首先,如果要存储星号,将其设置为单个整数字段更好,并且用户可以1,2,... 5根据用户选择的内容进行存储,或者甚至更好,只是5个布尔字段。 无论如何,回答您的问题,您可以创建另一个具有此模型外键的模型,如下所示:
class Article (models.Model):
author = models.ForeignKey('Users.User')
title = models.CharField()
text = models.TextField()
class Stars (models.Model):
star = models.IntegerField() #I would recommend boolean field instead
article = models.ForeignKey(Article,on_delete=models.CASCADE)
通过这种方式,您可以拥有与一篇文章相关的许多星星。您必须在视图中进行一些不同的处理,例如Stars.objects.filter(article=article)
才能获得特定文章的星标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。