Python 模型中的列表字段--Django
我是django的新手,致力于RESTAPI框架。我想要求用户以html格式输入某些详细信息,如受欢迎程度、某本书的名称 一本书可以属于不同的类别,如摩擦、浪漫、动作。 所以我想要一个分类列表字段。 可以提供两个选项,一个要求用户输入类别并在后端的列表中追加。或者提供一个用户可以选择的列表 已在model.py中尝试了以下代码Python 模型中的列表字段--Django,python,django,django-rest-framework,Python,Django,Django Rest Framework,我是django的新手,致力于RESTAPI框架。我想要求用户以html格式输入某些详细信息,如受欢迎程度、某本书的名称 一本书可以属于不同的类别,如摩擦、浪漫、动作。 所以我想要一个分类列表字段。 可以提供两个选项,一个要求用户输入类别并在后端的列表中追加。或者提供一个用户可以选择的列表 已在model.py中尝试了以下代码 from django.db import models class Category(models.Model): category = models.Cha
from django.db import models
class Category(models.Model):
category = models.CharField(max_length=100)
def __str__(self):
return self.category
class Books(models.Model):
name = models.CharField(max_length=100)
date = models.DateTimeField()
category = models.ManyToManyField(Category)
#category = models.ForeignKeyField(Category) #tried Foreign key Model Field also
def __str__(self):
return self.name
请帮帮我。这是正确的方法还是应该尝试其他方法。提前谢谢 它工作正常,但不是在管理面板上显示值,而是在Books模型表中显示Category对象
[
{
"name": "Harry Potter",
"date": 03-03-2014,
"category": 6
}
]
在第6类中,字符串值为“神奇”
是的,我认为这种方法在很多领域都是正确的,因为一本书可能有很多类别,而一个类别可能有很多书
from django.db import models
class Category(models.Model):
category = models.CharField(max_length=100)
def __str__(self):
return self.category
class Books(models.Model):
name = models.CharField(max_length=100)
date = models.DateTimeField()
category = models.ManyToManyField(Category)
def __str__(self):
return self.name
每本书只属于一个类别(或流派),所以您需要的是外键(不是多对多关系)。您的
书籍
型号应如下所示:
class Book(models.Model):
title = models.CharField(max_length=100)
publication_date = models.DateTimeField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
def __str__(self):
return self.title
注意事项:
- 例如,如果您从
模块导入日期,最好使用datetime
或publication\u date
而不是published
来隐藏日期date
- 一本书的特点是它的标题(因此最好叫第一个字段标题而不是名字)
意味着如果一个类别被删除,其所有相关书籍也将被删除on_delete=models.CASCADE
项目名称
?一个类别
实例?不,似乎不是这样。project_name是应用程序名称。Category是我在model.py中创建的CLS,与提及的代码相同。根据我的理解,Category_id是自动生成的吗?对吗?甚至我也再次迁移了模型,在那之后,它说了一个错误:没有这样的列:project\u name.category\u id。。不明白这里发生了什么。是的,你走的方向是正确的。模型声明似乎符合您的需要。我建议你也使用“相关名称”。category=models.ManyToManyField(category,related_name='some_rel_name')Thanx Ankur,我使用的是ForeignKey字段,但其作为book_api.category_id给出的错误可能不为空。你知道吗?多对多领域似乎非常适合你的情况。为什么选择外键呢。无论如何,对于声明的外键,您必须尝试插入或更新Books记录,但没有为类别外键提供正确的值。是这样吗?不,它说category_id列不存在。根据我的理解,category_id列是自动生成的。我们并不是为每个类模型都定义它。对吗?