2017-02-20 5 views
0

Модель номера - это поддельная модель без таблицы, и я не должен ее сохранять. Все, что мне нужно, - это сохранить все строчки Number.number как Message.receiver. Но save_model вызывает сначала и после сохранения сообщений cals save Number, которые просто проходят. Мне нужно получить родительскую модель сообщения из модели Number inline. Я попытался перегрузить save_model() из NumberAdmin, но не добился успеха. Я знаю, какой дизайн плох, но это наследие.Обновление родительской модели от поддельной модели Inline в django admin

models.py

class Message(models.Model): 
    receiver = models.BigIntegerField() 
    text = models.TextField(blank=True, null=True) 

    class Meta: 
     db_table = 'messages' 

    def __str__(self): 
     return "{}".format(self.text) 


class Number(models.Model): 
    message = models.ForeignKey("Message", related_name='receivers') 
    number = models.BigIntegerField() 

    class Meta: 
     verbose_name = "ReceiverNumber" 
     verbose_name_plural = "ReceiverNumbers" 
     managed = False 

    def __str__(self): 
     return self.number 

admin.py

class NumberInline(admin.TabularInline): 
    model = Number 
    extra = 0 
    fields = ('number',) 


class NumberAdmin(admin.ModelAdmin): 

    class Meta: 
     model = Number 


class MessageAdmin(admin.ModelAdmin): 
    inlines = (ReceiverNumberInline,) 

    class Meta: 
     model = Message 

ответ

0

Я не уверен, что я полностью понимаю вопрос, но вы пробовали перекрывая save метод Number модели?

class Number(models.Model): 
    message = models.ForeignKey("Message", related_name='receivers') 
    number = models.BigIntegerField() 

    class Meta: 
     verbose_name = "ReceiverNumber" 
     verbose_name_plural = "ReceiverNumbers" 
     managed = False 

    def __str__(self): 
     return self.number 

    def save(self, *args, **kwargs): 
     # do whatever you need without invoking super().save() 
+0

Кирилл благодарю вас за ответ. Это уже не важно. –

Смежные вопросы