Как получать стоимость модели и хранить их в другой модели?

в моем проекте django у меня есть два приложения, реестра и пользователи, в реестрах у меня есть несколько моделей, которые есть признаки общим (провинция, муниципалитет и sclinico), у меня есть эти же самые variabes в модели профиль, который находится в пользователях, что я хочу сделать, состоит в том, чтобы брать стоимость этих переменных в профиле и перемещать их моделей, которые у меня есть в registrosº, здесь я имею им код, если они могут помогать мне, я ему буду благодарен за них очень много,

# Modelo Perfil de la app usuarios
class Perfil(models.Model):
    cprov = (('LH', 'La Habana'), ('CIE', 'Cienfuegos'), ('VC', 'Villa Clara'), ('SC', 'Santiago de cuba'))

    cmunic = (('SA', 'Santa Clara'), ('CA', 'Camajuaní'), ('RE', 'Remedios'), ('CI', 'Caibarien'),
              ('SC', 'Santiago de Cuba'))

    csitio = (('IN', 'Infanti Norte'), ('IS', 'Infantil Sur'), ('CJ', 'Pol. Carlos J Finlay'),
              ('CT', 'Pol. Camilo Torres'), ('LP', 'Pol. López Peña'), ('28', 'Pol. 28 de Septiembre'),
              ('30', 'Pol 30 de Noviembre'), ('JJ', 'Pol. José Martí'), ('JP', 'Pol. Josué País'), ('LS', 'CPHEM SC'),
              ('ES', 'EMCOMED Santiago de Cuba'), ('LO', 'Laboratorio Oriente'), ('LF', 'Lab. Inmunología Clínica IFV'),
              ('JL', 'HPP José Luis Miranda'), ('SA', 'Pol. Santa Clara'), ('JR', 'Pol. José Ramón Acosta'),
              ('MA', 'Pol. Marta Abreu'), ('XX', 'Pol XX Aniversario'), ('CR', 'Pol Capitán Roberto Fleites'),
              ('CH', 'Pol. Chiqui Gómez Lubián'), ('LV', 'CPHEM VC'), ('EV', 'EMCOMED Villa Clara'),
              ('OC', 'Pol. Octavio de la Concepción y Pedraja'), ('MF', 'Pol. Manuel Fajardo Rivero'),
              ('HM', 'HMGD 26 de Diciembre'), ('XA', 'Pol. XXX Aniversario'), ('CC', 'Pol. Camilo Cienfuegos'),
              ('LF', 'Pol. Leandro Figueroa'), ('PA', 'Pol. Pablo Aguero'))

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    provincia = models.TextField(blank=True, null=True, choices=cprov)
    municipio = models.TextField(blank=True, null=True, choices=cmunic)
    sclinico = models.TextField(blank=True, null=True, choices=csitio)
    image = models.ImageField(default='default.jpg', upload_to='perfil_pics')
    history = HistoricalRecords()

    def __str__(self):
        return f'{self.user.username} Perfil'

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)

# Modelo Incluido de la app registros

class Incluido(models.Model):
    sino = (('1', 'Sí'), ('2', 'No'))
    provincia = models.CharField(max_length=2, blank=True, null=True)
    municipio = models.CharField(max_length=2, blank=True, null=True)
    sclinico = models.CharField(max_length=2, blank=True, null=True)
    numero = models.IntegerField("No.")
    iniciales = models.CharField("Iniciales del sujeto", max_length=10)
    feceva = models.DateField("Fecha de evaluación")
    inclusion = models.CharField("¿El sujeto se incluyo?", max_length=2, choices=sino)
    fecinc = models.DateField("Fecha de Inclusión", null=True, blank=True)
    codigo = models.CharField("Codigo del sujeto", max_length=11, null=True, blank=True)
    causano = models.IntegerField("Si no incluido refiera número de causa")
    investigador = models.CharField("Investigador", max_length=100)
    firma = models.CharField("Firma", max_length=2, choices=sino)
    history = HistoricalRecords()

    def get_absolute_url(self):
        return reverse('inc_detail', kwargs={'pk': self.pk})
0
задан 05.11.2019, 22:20
2 ответа

Повторно определять метод save в моей модели Инклуидо, мне sirviГі кроме того для filtar из-за сайта clГ-nico, и asГ - только показывать данные пользователям того же сайта.


# mi models.py

class Incluido(models.Model):
    sino = (('1', 'Sí'), ('2', 'No'))
    provincia = models.TextField(blank=True, null=True)
    municipio = models.TextField(blank=True, null=True)
    sclinico = models.TextField(blank=True, null=True)
    numero = models.IntegerField("No.")
    iniciales = models.CharField("Iniciales del sujeto", max_length=10)
    feceva = models.DateField("Fecha de evaluación")
    inclusion = models.CharField("¿El sujeto se incluyo?", max_length=2, choices=sino)
    fecinc = models.DateField("Fecha de Inclusión", null=True, blank=True)
    codigo = models.CharField("Codigo del sujeto", max_length=11, null=True, blank=True)
    causano = models.IntegerField("Si no incluido refiera número de causa")
    investigador = models.CharField("Investigador", max_length=100)
    firma = models.CharField("Firma", max_length=2, choices=sino)
    history = HistoricalRecords()

    def save(self, *args, **kwargs):
        self.provincia = Perfil.history.values()[0]['provincia']
        self.municipio = Perfil.history.values()[0]['municipio']
        self.sclinico = Perfil.history.values()[0]['sclinico']
        super(Incluido, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('inc_detail', kwargs={'pk': self.pk})

# mi vista

class IncView(LoginRequiredMixin, ListView):
    model = Incluido
    template_name = 'registros/incluido_show.html'

    def get_context_data(self, **kwargs):
        context = super(IncView, self).get_context_data(**kwargs)
        qry = Incluido.objects.filter(sclinico=Perfil.history.values()[0]['sclinico'])
        context['datos'] = qry

        return context
0
ответ дан 01.12.2019, 12:38

SegГєn я вижу ты можешь делать две вещи:

  1. Копировать все переменные selecciГіn, в которых ты нуждаешься с модели Perfil до модели Incluido, но он был бы duplicaciГіn cГіdigo.
  2. Другой состоит в том, чтобы создавать так называемый файл choices.py, и копировать в этом файле все переменные. Чтобы модель их использует, что ты захотел deberГЎs импортировать файл choices, дома я моделирую. Завися, где ты это импортировал deberГЎs добавлять полный маршрут. Например sГ - choices эта в ней aplicaciГіn usuarios наверху твоего файла models.py достаточна, что ты написал from .choices import *

, Так как . он символизирует настоящий каталог. Но sГ - эти в файле models.py aplicaciГіn registros. Ты должен писать:

from usuarios.choices import *
0
ответ дан 01.12.2019, 12:38
  • 1
    Я спасибо за старание помогать mihael, но поскольку моя цель состоит в том, чтобы предотвращать, как хорошо ты говоришь duplicació n có я говорю и делать им жизнь má s легкий, я сделал это моим пользователям, я это имею, если у кого-то есть та же проблема, и я dió результат, redefiní метод save в моей модели Инклуидо python def save(self, *args, **kwargs): self.provincia = Perfil.history.values()[0]['provincia'] self.municipio = Perfil.history.values()[0]['municipio'] self.sclinico = Perfil.history.values()[0]['sclinico'] super(Incluido, self).save(*args, **kwargs) – Raul Gonzalez-Mugica Romero 06.11.2019, 22:25

Теги

Похожие вопросы