首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultipleObjectsReturned和ContentType

MultipleObjectsReturned和ContentType
EN

Stack Overflow用户
提问于 2013-07-16 18:58:47
回答 1查看 410关注 0票数 0

有一个函数:

代码语言:javascript
复制
def Add_tag(request):
    if request.user.is_authenticated():
        if request.method == 'POST':
            form = TagsForm(request.POST)

        if form.is_valid():
            # Get value
            item_id = form.cleaned_data['item_id']
            text = form.cleaned_data['text']
            user = request.user
            model_type = ContentType.objects.get(app_label='tags', model='Tag')

            # Get or create user rating
            try:
                obj_t = Tag.objects.get(user_id=user.id, content_type_id=model_type.id, object_id=item_id)
            except ObjectDoesNotExist:
                obj_t = Tag.objects.create(user_id=user.id, content_type_id=model_type.id, object_id=item_id)

            obj_t.text = text
            obj_t.save()

            return HttpResponse(status=200)

模型

代码语言:javascript
复制
class Tag(models.Model):
    user = models.ForeignKey(User)
    text = models.CharField(max_length=100, blank=True, verbose_name=_('name'))
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    def __unicode__(self):
        return '%s %s' % self.user

该函数应该只创建一个对象。在第一次调用中,他创建了;第二次更新...第三个(或4/5/6/7.88/99/100.随机)(相同的值)被再次创建。

为什么要创建它?

MySQL,Django 1,5

EN

回答 1

Stack Overflow用户

发布于 2013-07-16 19:29:27

我的意思是不能使用get,因为数据库中有多条记录

get希望仅检索多个记录的一个记录/对象,查询集上有过滤器

我不明白您为什么要这样做,但在您的情况下,您还必须捕获multipleobject返回的异常

或使用过滤器

代码语言:javascript
复制
objs = Tag.objects.filter(user_id=user.id, content_type_id=model_type.id, object_id=item_id).update(text=text)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17674755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档