我有一類人在我的Django項目:Django的GETATTR()相關車型
class People(models.Model):
user = models.OneToOneField(User, unique=True)
adress = models.CharField(max_length=500)
def __unicode__(self):
return "%s %s" % (self.user.first_name, self.user.last_name)
def get_all_fields(self):
return self._meta.fields + self.user._meta.fields
我創建了一個視圖從Django的數據庫模型導出到一個CSV文件。 當然,將相關模型的信息導出是很好的,例如django用戶也是如此。
但是,當我環在我的人民名單與
people = People.objects.all()
for p in people:
row = ""
for field in p.get_all_fields():
row += str(getattr(p, field.name)) + ','
我得到了錯誤:「人」對象有沒有屬性「密碼」 當然還沒有,但我怎麼能使用異物與'人'有關getattr()通知?
編輯
我終於在我的班級使用一些額外的功能寫了一個小的解決方法
class People(models.Model):
user = models.OneToOneField(User, unique=True)
adress = models.CharField(max_length=500)
def __unicode__(self):
return "%s %s" % (self.user.first_name, self.user.last_name)
def get_all_fields(self):
return self._meta.fields + self.user._meta.fields
def get_attribute(self, field_name):
name_list = self.get_field_names()
if field_name in name_list:
return unicode(getattr(self, field_name))
else:
return unicode(getattr(self.user, field_name))
def get_field_names(self):
name_list = []
for field in self._meta.fields:
name_list.append(field.name)
return name_list
你應該在get_all_fields(self)中返回一個列表,你也應該在你的類中定義你的元數據。 – 2014-09-12 14:19:51