Я все еще младший с Джанго. Пожалуйста, объясните подробно: D
Я занимаюсь разработкой системы управления полными днями для ресторанов. Полный день может иметь много гостей, и у гостя может быть много полных дней. M2M Relationship.
Мои классы моделей:
class Full_day(models.Model):
by = models.ForeignKey('users.System_user', on_delete=models.CASCADE)
guests = models.ManyToManyField('users.Guest', verbose_name='Huespedes')
business_unit = models.ForeignKey(
'administration.Business_unit', on_delete=models.CASCADE, verbose_name='Unidad de Negocio')
type_full_day = models.ForeignKey(cat_full_day, on_delete=models.CASCADE)
created = models.DateField(
auto_now=True, auto_now_add=False, verbose_name='Creado el')
modified = models.DateField(
auto_now=False, auto_now_add=True, verbose_name='Modificado el')
class Guest(models.Model):
stature_choices=(
('+ 1.20', '+ 1.20 M'),
('- 1.20', '- 1.20 M')
)
name = models.CharField(max_length=50, verbose_name='Nombre')
document_id = models.PositiveIntegerField(unique=True, verbose_name='Cedula/Documento Identidad', blank=True, null=True)
stature = models.CharField(verbose_name='Estatura', choices = stature_choices, max_length=6)
created = models.DateField(auto_now=True, auto_now_add=False, verbose_name='Creado el')
modified = models.DateField(auto_now=False, auto_now_add=True, verbose_name='Modificado el')
Проблема : как вы видите, document_id
должно быть уникальным, я хочу, чтобы представление получилогостю, если он уже существует, обновить его и назначить на полный день.
Количество гостей на полный день зависит от типа полного дня, я уже решил его с помощью GET (см. это в представлении), и я отобразил количество GuestForm в соответствии с этим.
Мне нужна помощь в логике проверки.
Если есть лучший способ сделать это, возможно, сCreateView Я тоже мог бы его использовать!
Спасибо!
def Test(request):
if request.method == 'POST':
cat = request.GET['cf']
typefd = cat_full_day.objects.get(pk = cat)
fform = Full_dayForm(request.POST)
gforms = [GuestForm(request.POST, prefix=str(x)) for x in range(typefd.guests)]
#MAGIC HERE
#IF GUEST IN FORM EXIST UPDATE AND ASSING TO FULL_DAY
#THEN SAVE
elif (request.method == 'GET'):
cat = request.GET['cf']
typefd = cat_full_day.objects.get(pk = cat)
fform = Full_dayForm()
gforms = [GuestForm(prefix=str(x)) for x in range(typefd.guests)]
context = {
'typefd' : typefd,
'fform' : fform,
'gforms' : gforms,
}
return render(request, 'full_days/new_full_day.html', context)
else:
redirect('full_days:index')