具有交互更改下拉字段的Django Admin模型创建

时间:2018-09-28 12:23:11

标签: django-models django-admin-filters

我正在做一个停车应用程序,我打算添加一些班级和领域。 我想创建的是添加一些城市,例如布加勒斯特,纽约,巴黎,并且每个城市都有一些选择,例如布加勒斯特==> P1,P2,P3,纽约==> P1,P2,P3,P4, P5,巴黎==> P1,P2,P3,P4。 贝娄是保存记录时我现在拥有的屏幕截图。

enter image description here

class ParkingManager(models.Manager):
    def active(self, *args, **kwargs):
        return super(ParkingManager, self).filter(draft=False).filter(parking_on__lte=datetime.now())

class Parking(models.Model):
    PARKING_PLOT = (
        ('P1', 'Parking #1'),('P2', 'Parking #2'), ('P3', 'Parking #3'), 
        ('P4', 'Parking #4'),('P5', 'Parking #5'), ('P6', 'Parking #6'), 
        ('P7', 'Parking #7'),('P8', 'Parking #8'), ('P9', 'Parking #9'), 
        ('P10', 'Parking #10'),('P11', 'Parking #11'), ('P12', 'Parking #12'), 
        ('P13', 'Parking #13'),('P14', 'Parking #14'), ('P15', 'Parking #15')

    )
    user = models.ForeignKey(settings.AUTH_USER_MODEL,blank=True, null=True, default=1, on_delete=True)
    email = models.EmailField(blank=True, null=True)
    parking_on = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True,help_text='Alege data cand doresti sa vii in office',)
    parking_off = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True,help_text='Alege Data Plecarii')
    numar_masina = models.CharField(max_length=8, default="IF77WXV", blank=True, null=True,help_text='Introdu Numarul Masinii')
    location = models.CharField(max_length=3, blank=True, default="P1", null=True, choices=PARKING_PLOT,help_text='Alege Locul de Parcare Dorit')
    updated = models.DateTimeField(auto_now=True, auto_now_add=False, blank=True, null=True)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True, blank=True, null=True)

    objects = ParkingManager()

    def __str__(self):
        return self.location + " | " + str(self.parking_on) + " | " + str(self.parking_off)

当用户选择NY时,Parking按钮应仅用4条记录填充字段列表;为该城市创建的记录。如果用户选择布加勒斯特,则只有3条记录,等等。

我应该对我的模型做什么?或针对这种情况的最佳方法是什么?

谢谢你,周末快乐!

0 个答案:

没有答案