PDA

View Full Version : attribute های مربوط به models.ForeignKey



Ahmadly
دوشنبه 21 اردیبهشت 1394, 17:05 عصر
# models.py


class Location(models.Model):
data_center_name = models.CharField(max_length=30, verbose_name='DataCenter Location', )
rack_name = models.CharField(max_length=30, verbose_name='Rack Name')
num_in_rack = models.IntegerField(verbose_name='Number in Rack (From above)', blank=True, null=True)


def __str__(self):
return '%s | %s | %s' % (self.data_center_name.title(), self.rack_name.title(), self.num_in_rack, )




class Server(models.Model):
location = models.ForeignKey(Location)


def admin_views_location_num_in_rack(self):
return self.location.num_in_rack


admin_views_location_num_in_rack.allow_tags = True
admin_views_location_num_in_rack.admin_order_field = 'location__num_in_rack'
admin_views_location_num_in_rack.short_description = 'RACK ID'


def admin_views_location_data_center_name(self):
return self.location.data_center_name


admin_views_location_data_center_name.allow_tags = True
admin_views_location_data_center_name.admin_order_ field = 'location__data_center_name'


def admin_views_location_rack_name(self):
return self.location.rack_name


admin_views_location_rack_name.allow_tags = True
admin_views_location_rack_name.admin_order_field = 'location__rack_name'

# admin.py


class ServerAdminView(admin.ModelAdmin):
class Meta:
model = Server


list_display = ('id', 'name', 'description', 'admin_views_location_num_in_rack', 'admin_views_location_rack_name',
'admin_views_location_data_center_name', )




admin.site.register(Server, ServerAdminView)


تو پروژه بالا من میخوام وقتی سروری رو تعریف میکنم ۳ تا مقدار location رو از ماژول Server تعریف کنه
واسه همین تو location از models.ForeignKey استفاده کردم
حالا تو ادمین میخوام که هرکدوم از اینها رو تو یه فیلدی نشون بدم.طوری که بشه sort کرد
کد بالا الان کار میکنه و نیاز منو حل کرده اما فکر میکنم خیلی پیچیده شده
و اگه بخوام هر بار این کارارو بکنم کد کثسف میشه
ممنون میشم راهنمایی کنید