簡體   English   中英

Django Models內部方法

[英]Django Models internal methods

我是Django的新手,所以我只是組成了一個項目來了解它,但是此代碼有一個小問題,我希望能夠將它作為car obj(如果有),所以我可以這樣做:

>>>cars = Car.objects.all()
>>>print cars[0].category
>>>'A'
>>>cars[0].available(fr, to)

結果是:

>>>global name 'category' is not defined

因此,看來我無法在課堂上使用self.category,有什么想法嗎?

from django.db import models

class Car(models.Model):

    TRANSMISSION_CHOICES = (
        ('M', 'Manual'),
        ('A', 'Automatic'),
    )

    category = models.CharField("Category",max_length=1,primary_key=True)
    description = models.CharField("Description",max_length=200)
    numberOfCars = models.IntegerField("Number of cars")
    numberOfDoors = models.IntegerField("Number of doors")
    transmission = models.CharField("Transmission", max_length=1, choices=TRANSMISSION_CHOICES)
    passengers = models.IntegerField("Number of passengers")
    image = models.ImageField("Image", upload_to="photos/%Y/%m/%d")

    def available(self, fr, to):
        rents = Rent.objects.filter(car=self.category)
        rents = rents.excludes(start < fr)
        rents = rents.exclude(end > to)

        return cont(rents)

    def __unicode__(self):
        return "Class " + self.category

class Rent(models.Model):
    car = models.ForeignKey(Car)
    start = models.DateTimeField()
    end = models.DateTimeField()
    childrenSeat = models.BooleanField()
    extraDriver = models.BooleanField()

    def __unicode__(self):
        return str(self.car) + " From: " + str(self.start) + " To: " + str(self.end)

盡管我看不到錯誤與錯誤的關系,但您使用的過濾器看起來並不正確。

您可以在Car模型中將category定義為字符串:

category = models.CharField("Category",max_length=1,primary_key=True)

並在Rent模型中將car定義為外鍵:

car = models.ForeignKey(Car)

然后嘗試過濾租金:

rents = Rent.objects.filter(car=self.category)

但是汽車在這里應該是模特,而不是charfield。 也許您是想說car = self?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM