' NoneType'在使用django智能选择时,对象不可订阅

时间:2016-08-20 04:18:51

标签: django-models django-forms

from django.db import models
from django.core.urlresolvers import reverse
from django.utils import timezone
from smart_selects.db_fields import ChainedForeignKey, ChainedManyToManyField, GroupedForeignKey



# Create your models here.

        #DIRECTOR
class director(models.Model):
    sex = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    percent = (
        ('1', 1),
        ('2', 2),
        ('3', 3),
    )

    stats = (
        ('Single', 'Single'),
        ('Married', 'Maried'),
        ('Separated', 'Separated'),
        ('Widowed', 'Widowed'),
    )
    firstname = models.CharField(max_length=30, blank = False)
    lastname = models.CharField(max_length=30, blank = False)
    middlename = models.CharField(max_length=30, blank = True)
    birthdate = models.DateField(blank = False)
    age = models.IntegerField(blank = False)
    contact = models.CharField(blank = False, max_length=11, default="")
    email = models.CharField(blank = False, max_length=30, default="")
    civil_status = models.CharField(max_length=20, default="", choices = stats, blank = False)
    gender = models.CharField(max_length=1, choices = sex, blank = False)
    lot_no = models.CharField(max_length=10, blank = False)
    block_no = models.CharField(max_length=20, blank = False)
    street = models.CharField(max_length=20, blank = False)
    brgy = models.CharField(max_length=30, blank =False, default="")
    city = models.CharField(max_length=30, blank = False)
    region = models.CharField(max_length=50, blank = False)
    commission = models.CharField(max_length=1, choices = percent)

    #def get_absolute_url(self):
    #   return reverse('viewname', kwargs={'pk': self.pk})

    def __str__(self):
        return self.firstname + ' ' + self.middlename +  ' ' + self.lastname

        #MANAGER
class manager(models.Model):
    sex = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    percent = (
        ('1', 1),
        ('2', 2),
        ('3', 3),
    )

    stats = (
        ('Single', 'Single'),
        ('Married', 'Maried'),
        ('Separated', 'Separated'),
        ('Widowed', 'Widowed'),
    )

    director_name = models.ForeignKey(director)
    firstname = models.CharField(max_length=30, blank = False)
    lastname = models.CharField(max_length=30, blank = False)
    middlename = models.CharField(max_length=30, blank = True)
    birthdate = models.DateField(blank = False)
    age = models.IntegerField(blank = False)
    contact = models.CharField(blank = False, max_length=11, default="")
    email = models.CharField(blank = False, max_length=30, default="")
    civil_status = models.CharField(max_length=10, default="", choices = stats, blank = False)
    gender = models.CharField(max_length=1, choices = sex, blank = False)
    lot_no = models.CharField(max_length=20, blank = False)
    block_no = models.CharField(max_length=10, blank = False)
    street = models.CharField(max_length=20, blank = False)
    brgy = models.CharField(max_length=30, blank =False, default="")
    city = models.CharField(max_length=30, blank = False)
    region = models.CharField(max_length=50, blank = False)
    commission = models.CharField(max_length=1, choices = percent, blank = False)

    def __str__(self):
        return self.firstname + ' ' + self.middlename +  ' ' + self.lastname
        '''return "%s (%s)" % (
            self.firstname + ' ' + self.middlename +  ' ' + self.lastname,
            ", ".join(director.firstname + ' ' + director.middlename +  ' ' + director.lastname for director in self.director_name.all())
        )'''

        #ASSOCIATE
class associate(models.Model):
    sex = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    percent = (
        ('1', 1),
        ('2', 2),
        ('3', 3),
    )

    stats = (
        ('Single', 'Single'),
        ('Married', 'Maried'),
        ('Separated', 'Separated'),
        ('Widowed', 'Widowed'),
    )
     #area = ChainedForeignKey(Area, chained_field="country", chained_model_field="country")


    director_name = models.ForeignKey(director)
    #manager_name = models.ForeignKey(manager, blank = False)
    manager_name = ChainedForeignKey(
        manager, 
        chained_field="director_name", 
        chained_model_field="director_name",
        show_all=False, 
        auto_choose=True
        )
    firstname = models.CharField(max_length=30, blank = False)
    lastname = models.CharField(max_length=30, blank = False)
    middlename = models.CharField(max_length=30, blank = True)
    birthdate = models.DateField(blank = False)
    age = models.IntegerField(blank = False)
    contact = models.CharField(blank = False, max_length=11, default="")
    email = models.CharField(blank = False, max_length=30, default="")
    civil_status = models.CharField(max_length=20, default="", choices = stats, blank = False)
    gender = models.CharField(max_length=1, choices = sex, blank = False)
    lot_no = models.CharField(max_length=10, blank = False)
    block_no = models.CharField(max_length=20, blank = False)
    street = models.CharField(max_length=20, blank = False)
    brgy = models.CharField(max_length=30, blank =False, default="")
    city = models.CharField(max_length=30, blank = False)
    region = models.CharField(max_length=50, blank = False)
    commission = models.CharField(max_length=1, choices = percent, blank = False)

    def __str__(self):
        #return self.firstname + ' ' + self.middlename +  ' ' + self.lastname
        return "%s (%s)" % (
            self.firstname + ' ' + self.middlename +  ' ' + self.lastname,
            ", ".join(director.firstname + ' ' + director.middlename +  ' ' + director.lastname for director in self.director_name.all()),
            ", ".join(manager.firstname + ' ' + manager.middlename +  ' ' + manager.lastname for manager in self.manager_name.all()),
        )

enter image description here

0 个答案:

没有答案