django admin save override - PullRequest
       19

django admin save override

0 голосов
/ 15 февраля 2019

models.py:

class Cars(models.Model):
   checking= ((_('pending'),_('pending')),
           (_('reject'),_('reject')),
           (_('approved'),_('approved')),
           (_('expired'),_('expired')),                )
   carname=models.CharField(max_length=128,verbose_name=_('carname'),unique="True")
   confirm=models.CharField(choices=checking,max_length=12,verbose_name=_('confirmation'), default=_('pending'))
   def __str__(self):
      return str(self.carname)
   class Meta:
      verbose_name=_('car')
      verbose_name_plural=_('cars')
      ordering = ('carname',) 


class Stocks(models.Model):
   user=models.ForeignKey(User, null=True,related_name='stockdetails')
   mark=models.CharField(max_length=128,blank=True, null=True,verbose_name=_('mark'))
   pic=models.ImageField(blank=True,null=True,verbose_name=_('pic'),upload_to = 'stocks', default = 'stocks/nopic.jpg')
   car=models.ForeignKey(Cars,blank=True,null=True,verbose_name=_('car'),on_delete=models.SET_NULL ,to_field='carname')      description=models.CharField(blank=True,null=True,max_length=264,verbose_name=_('description'))
   price=models.PositiveIntegerField(blank=True,null=True,verbose_name=_('price'))
   date=models.DateTimeField(auto_now_add = True,verbose_name=_('date'))
   checking= ((_('pending'),_('pending')),
       (_('reject'),_('reject')),
       (_('approved'),_('approved')),
       (_('expired'),_('expired')),
            )
    confirm=models.CharField(choices=checking,max_length=12,verbose_name=_('confirmation'), default=_('pending'))
   def __str__(self):
       return str(self.id)

   class Meta:
       verbose_name=_('Stock')
       verbose_name_plural=_('Stocks')
   def get_absolute_url(self):
         return reverse('BallbearingSite:detailadvertisement' ,kwargs={'id':self.id})

Таблица запасов имеет внешний ключ от таблицы автомобилей.Я хочу, чтобы всякий раз, когда администратор сохранял поле подтверждения запаса как «утвержденное», поле подтверждения автомобилей также сохранялось как «утвержденное».

я переопределил метод сохранения в admin.py:

class StocksAdmin(admin.ModelAdmin):
    list_display=["user","raste","stname","mark","description","pic","price","confirm","car","carbrand","date","parts_cars"]
    list_editable=["confirm",]

    def save_model(self, request, obj, form, change):
        if obj.confirm == _('approved') :
            obj.car.confirm =_('approved')
        super().save_model(request, obj, form, change)
        class Meta:
            model= Stocks
admin.site.register(Stocks,StocksAdmin) 

но это не работает

1 Ответ

0 голосов
/ 15 февраля 2019

Вам необходимо сохранить объект автомобиля

def save_model(self, request, obj, form, change):
    if obj.confirm == _('approved') :
        obj.car.confirm =_('approved')
        obj.car.save()
        super().save_model(request, obj, form, change)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...