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 до