更新模型和序列化程序后,无法将新项目保存到数据库。我一直得到"'title‘对于这个函数来说是一个无效的关键字参数。“
我正在开发Postgres10、Python3.6、Django2.0和DRF3.8.2。
我已经丢弃了我的数据库几次,但错误仍然存在。求求你我需要你的帮助。提前谢谢。
这是我的旧模型的副本
class Article(models.Model):
title = models.CharField(max_length=200, blank=False)
slug = models.SlugField(max_length=250, unique_for_date='created')
body = models.TextField()
image_url = models.URLField(max_length=255)
author = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add = True)
published = models.DateTimeField(auto_now=True)
updated = models.DateTimeField(auto_now=True)
country = models.ForeignKey(Country, on_delete=models.CASCADE)
categories = models.ManyToManyField(Category, default=1)
# categories = ArrayField(models.IntegerField(), blank=False)
entities = models.ManyToManyField(Entity, default=1)
# entities = ArrayField(models.CharField(max_length=200),
blank=True)
summary = models.TextField(blank=True)
is_published = models.BooleanField(default=False)
is_curated = models.BooleanField(default=False)
class Meta:
ordering = ('-created',)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Article, self).save(*args, **kwargs)
我的新(更新)模型:
class Article(models.Model):
title = models.CharField(max_length=200, blank=False)
slug = models.SlugField(max_length=250, unique_for_date='created')
body = models.TextField()
image_url = models.URLField(max_length=255)
author = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add = True)
published = models.DateTimeField(auto_now=True)
updated = models.DateTimeField(auto_now=True)
country = models.ForeignKey(Country, on_delete=models.CASCADE,
related_name="posts")
category = models.OneToOneField(Category,
on_delete=models.CASCADE,
default=1, related_name="posts")
entities = models.ManyToManyField(Entity, default=1,
related_name="posts")
summary = models.TextField()
keypoint1 = models.CharField(max_length=500, blank=False,
null=False)
keypoint2 = models.CharField(max_length=500, blank=False,
null=False)
keypoint3 = models.CharField(max_length=500, blank=True,
null=True)
keypoint4 = models.CharField(max_length=500, blank=True,
null=True)
is_published = models.BooleanField(default=False)
is_curated = models.BooleanField(default=False)
class Meta:
ordering = ('-created',)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Article, self).save(*args, **kwargs)
我的序列化程序:
class CreateArticleSerializer(serializers.ModelSerializer):
author = UserSerializer(read_only=True, required=False)
country = CountrySerializer(read_only=True)
class Meta:
model = Article
fields = ("id", "title", "body", "image_url", "country",
"keypoint1", "keypoint2", "keypoint3", "keypoint4",
"category", "entities", "author", "created", "updated",
"published", "is_published")
read_only_fields = ("id", "created", "slug")
def create(self, validated_data):
entities_relations = validated_data.pop('entities', None)
entity_instance = Entity.objects.create(**validated_data)
entity_instance.posts = entities_relations
article = Article.objects.create(entities=entity_instance,
**validated_data)
return article
和我的create post视图:
class ArticleAPIView(generics.CreateAPIView):
queryset = Article.objects.all()
serializer_class = CreateArticleSerializer
permission_classes = (IsAuthenticatedOrReadOnly,)
#Create a new post
def post(self, request, format=None):
data_map = {
'title': request.data.get('title'),
'body': request.data.get('body'),
'image_url': request.data.get('imageUrl'),
'keypoint1': request.data.get('keyPoint1'),
'keypoint2': request.data.get('keyPoint2'),
'keypoint3': request.data.get('keyPoint3'),
'keypoint4': request.data.get('keyPoint4'),
}
serializer = CreateArticleSerializer(data=data_map,context=
{'request': request})
if serializer.is_valid():
serializer.save(author=self.request.user)
post_id = serializer.instance.id
post = get_object_or_404(Article, pk=post_id)
return Response((jsend.success({'post':
serializer.data})), status=status.HTTP_201_CREATED)
else:
return Response((jsend.fail(serializer.errors)),
status=status.HTTP_400_BAD_REQUEST)
发布于 2018-08-01 05:46:16
在序列化程序的create方法上,您正尝试使用Article
的数据字段创建一个Entity
entities_relations = validated_data.pop('entities', None)
entity_instance = Entity.objects.create(**validated_data)
您没有指定发生错误的行,但它似乎就在这里。我不知道Entity
模型的字段,但title似乎不在其中。
发布于 2018-08-01 05:46:40
你确定吗?
entity_instance = Entity.objects.create(**validated_data)
??实体模型是否接受与第一条相同的字段?
https://stackoverflow.com/questions/51622311
复制相似问题