Это мои модели двигателей
from django.db import models
class Colors(models.Model):
color_name = models.CharField(max_length=50)
def __unicode__(self):
return self.color_name
Это мои автомобили моделей
from django.db import models
class Cars(models.Model):
car_model = models.CharField(max_length=50)
car_colors = models.ManytoManyField(Colors, related_name='Car Colors')
def __unicode__(self):
return self.car_model
O.K. Давайте посмотрим мою модель CarsData.
Это мои модели CarsData
from django.db import models
class CarsData(models.Model):
car_barcode= models.CharField(max_length=50)
available_color = ChainedForeignKey(
Cars,
chained_field="car_model",
chained_model_field="car_colors",
show_all=False,
auto_choose=True
)
def __unicode__(self):
return self.car_barcode
Мой admin.py выглядит так:
from django.contrib import admin
from django import forms
from myapp.models import *
class CarsDataAdminForm(forms.ModelForm):
class Meta:
model = CarsData
def __init__(self, *arg, **kwargs):
super(CarsDataAdminForm, self).__init__(*arg, **kwargs)
self.fields['available_color'].choices = [(csc.id,csc.car_colors) for csc in Cars.objects.all()
class CarsDataAdmin(admin.ModelAdmin):
form = CarsDataAdminForm
admin.site.register(CarsData,CarsDataAdmin)
Есть ли какой-либо способ показать в данных поля ChoiceField 'just' color_name? Я вижу только car_model, потому что я должен установить его:
def __unicode__(self):
return self.car_model
Как связать поле available_colors с полем color_name? Я хочу показать в списке доступных_цветов только названия цветов, такие как красный, синий, черный, белый ...
Не могли бы вы дать мне пример?