У меня следующая структура:
class FeatureType(models.Model):
type = models.CharField(max_length=20)
def __unicode__(self):
return self.type
class Feature(models.Model):
name = models.CharField(max_length=50)
type = models.ForeignKey(FeatureType)
premium = models.BooleanField("Premium Feature", default=False)
def __unicode__(self):
return self.name
То, что я хочу сделать, это когда пользователь добавляет транспортное средство (приложение для инвентаризации транспортных средств), есть большое текстовое поле, которое будет использоваться дляпользователь может получить список функций с другого сайта, скопировав и вставив их туда.
Пока у меня все хорошо, но я не знаю, как это сделать, для каждой функции, анализируемой изтекстовое поле, пользователь сможет установить type
, к которой принадлежит эта функция.Вот мой код:
vehicle_form = VehicleForm(request.POST or None)
photos = PhotosFormSet(request.POST or None, request.FILES or None)
features = FeaturesForm(request.POST or None)
if vehicle_form.is_valid() and photos.is_valid() and features.is_valid():
vehicle = vehicle_form.save(commit=False)
vehicle.save()
if features.cleaned_data['external']:
external_set = features.cleaned_data['external'].split('\r\n')
for feature in external_set:
#set featuretype somehow
vehicle_feature, created = Feature.objects.get_or_create(name=feature
, type = featuretype)
feature = vehicle.features.add(vehicle_feature)
photos = PhotosFormSet(request.POST, request.FILES, instance=vehicle)
photos.save()
Итак, как я могу включить выбор типа функции для каждой функции?
В идеале я хочу, чтобы существующие функции были сопоставлены с записью ... для тех функций, которые не существуют, пользователь будет перенаправлен в другое представление, которое позволит ему установитьtype
для каждой новой функции и последующего добавления ее в запись.
ОБНОВЛЕНИЕ 1 Я немного изменил код, чтобы он выглядел так:
if features.cleaned_data['external']:
new_features = []
external_set = features.cleaned_data['external'].split('\r\n')
for feature in external_set:
try:
vehicle_feature = Feature.objects.get(external_name = feature)
feature = vehicle.features.add(vehicle_feature)
except Feature.DoesNotExist:
new_features.append(feature)
Это заботится о получении существующих функций .... теперь я хочу, чтобы все функции из new_features
были переданы в другую форму после того, как пользователь сохранит текущую запись, где пользователь будет вводить дополнительную информацию для каждогоособенность.