Добавьте вторые записи в модель, верните "" Столбец 'made_at' не может быть пустым "" - PullRequest
0 голосов
/ 08 марта 2020

У меня проблема со следующей моделью

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 для каждой записи .: ))

...