Python django版本1.8';外键&x27;对象没有属性
在我的models.py中,我有3个班 计划 发现 查找类型 实体之间的关系: 项目可以有0到N个查找。每个查找都有一个查找类型Python django版本1.8';外键&x27;对象没有属性,python,django,Python,Django,在我的models.py中,我有3个班 计划 发现 查找类型 实体之间的关系: 项目可以有0到N个查找。每个查找都有一个查找类型 class Project(models.Model): completed_date = models.DateField(blank=True, null=True) .. and some other attributes class RA_Finding_type(models.Model): finding_title = models.CharField
class Project(models.Model):
completed_date = models.DateField(blank=True, null=True)
.. and some other attributes
class RA_Finding_type(models.Model):
finding_title = models.CharField(max_length=40)
finding_desc = models.TextField()
remediation_desc = models.TextField()
trc_control_number = models.TextField()
display = models.BooleanField(blank=True)
class RA_Finding(models.Model):
project = models.ForeignKey(Project)
if (not project.completed_date): # Error here.
finding_type = models.ForeignKey(RA_Finding_type, limit_choices_to={'display': True},verbose_name='Weakness Type')
else:
finding_type = models.ForeignKey(RA_Finding_type, limit_choices_to={'display': False},verbose_name='Weakness Type')
。。。其他属性
在admin.py中
class ProjectAdmin(admin.ModelAdmin):
form = ProjectAdminForm # For user sort...
readonly_fields = ('id', ... others)
inlines = [
FindingInline,.. other inlines
]
class FindingInline(admin.StackedInline):
model = RA_Finding
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
field = super(FindingInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
if db_field.name == 'project':
if request._obj_ is not None:
field.queryset = field.queryset.filter(id__exact = request._obj_.pk)
else:
field.queryset = field.queryset.none()
return field
extra = 1
fieldsets = (
(None, {
'fields': ('finding_type',
... other fields
)
})),
我想根据完成日期填充finding_type属性。这是遗留数据的主要功能。要求是-对于具有完成日期的项目,显示所有查找类型,否则仅显示显示设置为true的查找类型。当我尝试这样做时,我得到一个错误-'ForeignKey'对象没有属性。有没有办法在Django实现这一点?感谢所有帮助。在保存模型时尝试这样做:
def save(self, *args, **kwargs):
if (not self.completed_date):
self.finding...
else:
self.finding...
super(Project, self).save(*args, **kwargs)
您是否正在尝试根据
完成日期设置查找类型值?或者你想做什么,比如在管理面板中显示它,等等?我只想根据完成日期设置查找类型值。在admin.py中,我有FindingInline(admin.stackedLine)类:model=RA_Finding fieldset=((无,{'fields':('Finding_type',('risk_id','discovery_date',)和其他。