Hello,

I have been searching since the last couple of days and dont see a clear 
answer, hence posting here. Here is what my application is 

1) There are Users ( CustomUser)
2) There are Forms (PDFForm)
3) There are Fields(Field)
4) Each Form has multiple Fields with attributes(PDFFormField)
5) Each User has multiple fields associated with them(UserProfile)
6) Users can request PDFs (GeneratedPDF)

Imagine a User requesting a PDF. A row is created in GeneratedPDF model

This PDF has multiple fields, which need to be populated by values coming 
from the User Profile Fields (Both UserProfile and PDFFormField has the 
fields as a FK)



Here is how my Models look 

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.conf import settings


class CustomUser(AbstractUser):
    pass
    # add additional fields in here


#Class has reference to all PDFForms
class PDFForm(models.Model):
 #pass 
 pdf_type=models.IntegerField(default=0)
 pdf_name=models.CharField(max_length=100,default='')
 file_path=models.FileField(default='') 


#Class has reference to every form Field created
class Field(models.Model):
 #pass 
 field_type=models.IntegerField(default=0)
 
 
#class relates form field id with PDF ID, a pdf can have multiple fields of 
same kind. 
class PDFFormField(models.Model):
 #pass 
 pdf=models.ForeignKey('PDFForm', on_delete=models.CASCADE,default=0)
 field=models.ForeignKey(Field, on_delete=models.CASCADE,default=0) 
 field_page_number=models.IntegerField(default=0)
 field_x=models.DecimalField(max_digits=6,decimal_places=2,default=0)
 field_y=models.DecimalField(max_digits=6,decimal_places=2,default=0)
 field_x_increment=models.DecimalField(max_digits=6,decimal_places=2,default
=0)
 class Meta:
 ordering= ("field_page_number",)




    
#class stores extra user data, which is treated as a form field. 
class UserProfile(models.Model):
 #pass 
 user=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
default=0)
 field=models.ForeignKey(Field, on_delete=models.CASCADE,default=0)
 field_text=models.CharField(max_length=200,default='')
 field_date=models.DateField()
 
#class has reference to all pdfs users have generated/requested
class GeneratedPDF(models.Model):
 user=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
default=0)
 pdf=models.ForeignKey('PDFForm', on_delete=models.CASCADE,default=0)
 date_created=models.DateTimeField(auto_now=True)
 class Meta:
 ordering= ("date_created",)


A typical query would look like this

select * from PDFFormField A, UserProfile B where B.pdf=<pdf_id> and A.user
=<user_id> and A.field=B.field

The above query will match the Fields by ID in both the tables UserProfile 
and PDFformField for The specific user <user_id> who has request a specific 
pdf <pdf_id>


I cannot find a documented example which can help me achieve the above 
query using ORM.   I am thinking that I have to resort to using cursors to 
execute a custom SQL. 

Please advise if I should use the cursors route or modify my Models in 
someway. 

Thank you
Rupin




-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/83dc7c27-8734-4a38-bed7-b009e47d28e1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to