У меня проблема со следующей моделью
class TagBuyer(CreatedatModelStaff):
id = models.UUIDField(
primary_key=True,
default=DEF_UUID,
editable=False)
buyer = models.ForeignKey(
Buyer,
on_delete=models.SET(DEF_UUID),
)
tag = models.OneToOneField(
Tag,
on_delete = models.SET(DEF_UUID),
blank=True,
to_field='unique_id',
)
description = models.CharField(
blank=True,
null=True,
max_length=256,
help_text=_('Observatii:'),
)
objects = models.Manager() # The default manager.
active_objects = IsActiveManager() # Select only active records
class Meta:
verbose_name = _('Cumparator TAG')
verbose_name_plural = _('Cumparatori TAG-uri')
def __str__(self):
return str(self.tag)
class CreatedatModelUser(BaseCreateModel):
created_by = models.ForeignKey(
User,
on_delete=models.SET_NULL,
null=True,
verbose_name=(_("Ultima modificare")),
)
class Meta:
abstract = True
class BaseCreateModel(models.Model):
"""
Abstact class for common model atributes
"""
created_at = models.DateTimeField(
verbose_name=(_("Creat la")),
auto_now_add=True,
)
last_change = models.DateTimeField(
verbose_name=(_("Ultima modificare")),
auto_now=True,
)
is_active = models.BooleanField(
default=True,
help_text= _('Modelul de tiparire este disponibil pentru tiparire'),
)
class Meta:
abstract = True
Первая вставка работает хорошо от django администратора и, на мой взгляд. Проблема всплывающего окна со второй записью.
- django admin return "Столбец 'create_at' не может быть пустым"
- мой взгляд на самом деле выполнить обновление первой записи
'' 'класса BuyerAddTagPopupView (LoginRequiredMixin, CreateView): template_name =' покупатель / popup / purchase_add_tag. html 'readonly_fields = [' покупатель ']
def get(self, request, slug=None):
if request.user.is_authenticated:
form = BuyerAddTagForm()
try:
buyer_obj = Buyer.active_objects.get(slug=slug)
except Buyer.DoesNotExist:
##
args = {
'msg': msg,
'form':form,
'page_title':self.title,
'gargs':self.gargs,
}
return render(request, self.template_name, args )
args = {
'form':form,
'page_title':self.title,
'gargs':self.gargs,
}
return render(request, self.template_name, args )
else:
return redirect('general:home')
def post(self, request, slug=None):
if request.user.is_authenticated:
try:
buyer_obj = Buyer.active_objects.get(slug=slug)
except Buyer.DoesNotExist:
##
return render(request, self.template_name, args )
form = BuyerAddTagForm(request.POST)
if form.is_valid():
tag_nr = form.cleaned_data["tag"]
try:
tag = Tag.available_tag.get(tag_nr=tag_nr)
except Tag.DoesNotExist:
raise ValidationError(_('TAGul a fost asociat.' ),
code='tag_associate_view'
)
description = form.cleaned_data["description"]
buyer = buyer_obj
print('buyer.id ', buyer.id)
new_tag_to_buyer = TagBuyer(
tag = tag,
buyer = buyer,
description = description,
created_at = timezone.now(),
created_by = request.user,
)
new_tag_to_buyer.save()
messages.success(
request,
_('TAG-ul a fost înregistrat.')
)
if '_save_action' in self.request.POST:
print('_save_action')
return redirect('general:home')
if '_save_and_new_action' in self.request.POST:
print('_save_and_new_action')
args = {
'form': form,
'title': self.title,
'gargs': self.gargs,
}
return render(request, self.template_name, args )
else:
print('else section')
args = {
'form': form,
'title': self.title,
'gargs': self.gargs,
}
return render(request, self.template_name, args )
else:
return redirect('accounts:login')
def get_absolute_url(self):
return reverse('buyer:buyer_add_tag')
'' '
Есть идеи по поводу этого поведения? В чем я ошибся?
Заранее спасибо
Позднее редактирование массовая замена это совсем не хороший вариант. Я заменил default = uuid.uuid4 , на default = DEF_UUID , по ошибке и использую один и тот же PK для каждой записи .: ))