в моем проекте 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})
Повторно определять метод 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
SegГєn я вижу ты можешь делать две вещи:
Perfil
до модели Incluido
, но он был бы duplicaciГіn cГіdigo. 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 *
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