如何在Django中从模型中获取一个字段

10

我在Django应用程序中有这样一个模型。我想只绘制该模型的一个字段并将它们放在视图中。我的以下解决方案不起作用:

obj = Text.objects.get(subsID)

我的模型

result = braintree.Subscription.create({
        "payment_method_token": payment_method_token,
        "plan_id": "67mm"
        })

subscription_id = result.subscription.id

class Text(models.Model):
    title = models.CharField(max_length=255)
    text = models.TextField()
    date_from = models.DateTimeField('date from', blank=True, null=True)
    date_to = models.DateTimeField('date to', blank=True, null=True)
    subsID = models.CharField(default=subscription_id, max_length=255)

    def __unicode__(self):
        return self.title

我的看法

def get_history(request):
    subscription_id = Text.objects.filter(subsID)
    history = braintree.Subscription.find(subscription_id)
    return render(request, "sheet/history.html", {"history": history})

请展示你的完整视图。 - rnevius
请检查我的更新。 - mark
"Text.objects.filter(subsID)"中的subsID是什么? - itzMEonTV
@itzmeontv,请检查我的更新 - 这是来自Braintree的订阅。 - mark
3个回答

29

通常,在使用filterget时,你需要将查询语句放在内部,例如:

subscription_id = Text.objects.filter(fieldname="searchterm")

这将返回一个queryset。因此要查看这个

subscription_id.values() #returns a list of objects(dicts)
如果您只想获取subsID,请执行以下操作:
subscription_id.values("subsID")

这也会返回一个包含列表的结果

[{"subsID":"value"}, {"subsID":"value"} ....]

如果您想获取

subscription_id.values_list("subsID", flat=True)

这将返回如下结果

["value", "value", ....]

1
你需要将subsID的值等于你想要查找的值。
subscription_id = Text.objects.filter(subsID=<your subscrition id variable>)

请注意,这将返回一个列表 []。
subscription_id = Text.objects.get(subsID=<your subscrition id variable>)

这将返回一个对象。

1
问题是关于限制字段的。 - Purrell

0

链接

你不能在视图中使用模型,你需要使用ModelForm或Form。 一旦你使用了它,你可以指定哪个字段是活动的或者只需在ModelForm中设置属性即可。

exclude=['paramiter_name']

完成了。

祝你好运。


无论如何,我的建议是使用ModelForm更好地进行管理。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接