Как сохранить foreikey в django отношения n: m? - PullRequest
0 голосов
/ 29 апреля 2020

views.py
`@login_required def add_arquivo (request, id): if str (request.user)! = 'AnonymousUser':

    if str(request.method) == "POST":
        form_arq = ArquivoForm(request.POST, request.FILES)
        if form_arq.is_valid():
            form_arq.save()
            arquivo = Arquivo.objects.create(arq_pro_id  = id, arq_usu_id = request.user, arq_desc = form_arq.arq_desc, arq_nome = form_arq.arq_nome, arq_imagem = form_arq.arq_imagem, arq_localizacao_documento = form_arq.arq_localizacao_documento)

            return redirect('/inicio_projeto/')# rediredionando para lista
    else:
        form_arq = ArquivoForm()
    return render(request, 'arquivos/add_arquivo.html', {'form_arq' : form_arq })
else:
    return redirect('/')`

Я не знаю, как я могу сохраните эти данные arq_pro_id и arq_usu_id вместе с другими.

class Arquivo(models.Model):
arq_pro_id = models.ForeignKey(Projetos, on_delete=models.CASCADE, null=True)  # Pegando o id da tabela Projetos
arq_usu_id = models.ForeignKey(Pessoa, on_delete=models.CASCADE, null=True)  # Pegando o id da tabela Usuarios
arq_desc = models.TextField('Descrição:')
arq_nome = models.CharField('Nome:', max_length=100, null=True)
arq_imagem = StdImageField('Imagem:', upload_to='imagem_projeto_arq', null=True)
arq_localizacao_documento = models.FileField(upload_to='arquivos_projeto', null=True, max_length=1000)

эта таблица Arquivos может иметь несколько arquivos, связанных с проектом.

class Projetos(models.Model):
FINANCIAMENTO_CHOICES = (
    ("S", "Sim"),
    ("N", "Não")
)  #
pro_titulo = models.CharField('Título do projeto:', max_length=100)
pro_imagem = StdImageField('Imagem:', upload_to='imagem_projeto', null=True)
# pro_autor =  models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
pro_desc = models.TextField('Descrição:')
pro_financiamento = models.CharField('Financiamento:', max_length=1, choices=FINANCIAMENTO_CHOICES, blank=False,
                                     null=False)
pro_financiadora = models.CharField('Instituição financiadora:', max_length=100)
pro_datetime = models.DateTimeField('Data de publicação:', blank=True, null=True)
pro_inst = models.ForeignKey(Instituicao, on_delete=models.CASCADE, null=True)
pro_usuarios = models.ManyToManyField(
    Pessoa,
    through='ProjetosDosUsuarios',
    through_fields=('pdu_projetos', 'pdu_usuarios'),  #
)

def publicar(self):
    self.pro_datetime = timezone.now()
    self.save()

def __str__(self):
    return self.pro_titulo

class Pessoa(AbstractUser):
nome = models.CharField('Nome', max_length=100)
instituicao = models.CharField('Instituição de ensino', max_length=200)
cpf = models.CharField('CPF', max_length=11)
rg = models.CharField('RG', max_length=11)
rg_expedidor = models.CharField('Orgão expedidor', max_length=4)
lattes = models.TextField('Lattes')
foto = StdImageField('Foto', upload_to='pesquisador', variations={'thumb': (124, 124)})
email = models.EmailField('E-mail', unique=True)
telefone = models.CharField('Telefone', max_length=11)
slug = models.SlugField('Slug', max_length=100, blank=True, editable=False)

USERNAME_FIELD = 'email'  
REQUIRED_FIELDS = ['nome', 'instituicao', 'cpf', 'rg', 'rg_expedidor', 'lattes', 'foto', 'telefone',
                   'slug']  

def __str__(self):
    return self.email  # Retorna o email pois usaremos ele para fazer o login

objects = UsuarioManager()

это таблицы, на которые ссылается foreikey до

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...