简体   繁体   中英

How to get one field from model in django

I have such a model, in my django application. I want to draw only one field of this model and put them in the view. My solution below does not work:

obj = Text.objects.get(subsID)

My model

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

My view

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

Generally, When filter or get , you have to put query inside it, like

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

This will return a queryset .So to view this

subscription_id.values() #returns a list of objects(dicts)

If you want to get only subsID

subscription_id.values("subsID")

This also return you list which contains

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

If you want to get only values

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

This will return like

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

You have to equal subsID to the value you want to find.

subscription_id = Text.objects.filter(subsID=<your subscrition id variable>)

pay attention this will return a list []

subscription_id = Text.objects.get(subsID=<your subscrition id variable>)

This will return an object

Link

You can't use the model in the view, you need to use the ModelForm or Form. Once you use that one, you can specify which field is active or not or simply setting the attribute in the ModelForm,

exclude=['paramiter_name']

and it's done.

Good luck.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM