django-formset custom queryset #215
-
I am using the https://django-formset.fly.dev/ library, version 1.7.6. I'm trying to set a custom queryset on a Could you advise on how to properly set a custom queryset for forms.py
views.py
models.py
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
This seems more like a question for consulting. Can't work on this for free. |
Beta Was this translation helpful? Give feedback.
-
I founded the solution class RemainingInRGPItemManager(models.Manager):
def get_queryset(self):
"""Retrieve all active users"""
return super().get_queryset().annotate(
total_qty=Sum("qty", distinct=True),
out_rgp_item_sent_qty=Sum("outrgpitem__sent_qty"),
remaining_qty=Case(
When(out_rgp_item_sent_qty__isnull=True, then=F("total_qty")),
default=F("total_qty") - F("out_rgp_item_sent_qty"),
output_field=models.IntegerField()
)
).filter(
Q(remaining_qty__gt=0)
)
class InRGPItem(CreatedAtAndUpdatedAt):
guid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
in_rgp_entry = models.ForeignKey(InRGPEntry, on_delete=models.CASCADE)
rgp_item = models.ForeignKey(RGPItem, on_delete=models.CASCADE)
serial_no = models.PositiveSmallIntegerField()
qty = models.PositiveSmallIntegerField()
objects = models.Manager()
remaining_in_rgp_items = RemainingInRGPItemManager()
def __str__(self):
return f"{self.serial_no} - {self.rgp_item.name} (Qty: {self.qty})" forms.py class OutRGPEntryCollection(FormCollection):
outrgpentry = OutRGPEntryForm()
outrgpitem_set = OutRGPItemCollection()
legend = "Out RGP Entry"
default_renderer = BootstrapFormRenderer(
form_css_classes='row',
field_css_classes={
# '*': 'mb-2 col-4',
'customer_name': 'col-sm-4',
'rgp_no': 'col-sm-4',
'rgp_date': 'col-sm-4',
'chalan_no': 'col-sm-4',
'chalan_date': 'col-sm-4',
'rgp_date': 'col-sm-4',
'in_rgp_item': 'mb-2 col-sm-4',
'sent_qty': 'mb-2 col-sm-4',
'note': 'mb-2 col-sm-4',
},
)
def __init__(self, *args, **kwargs):
print(f"START:OutRGPEntryCollection.__init__", kwargs)
super().__init__(*args, **kwargs)
in_rgp_entry_obj = kwargs.get('instance', None)
print(f"max_siblings: {self.declared_holders['outrgpitem_set'].max_siblings}")
if in_rgp_entry_obj:
self.declared_holders['outrgpentry'].fields['customer_name'].initial = in_rgp_entry_obj.rgp_customer.name
self.declared_holders['outrgpentry'].fields['rgp_no'].initial = in_rgp_entry_obj.rgp_no
self.declared_holders['outrgpentry'].fields['rgp_date'].initial = in_rgp_entry_obj.rgp_date
in_rgp_item_queryset = InRGPItem.remaining_in_rgp_items.filter(in_rgp_entry=in_rgp_entry_obj)
self.declared_holders['outrgpitem_set'].max_siblings = in_rgp_item_queryset.count()
self.declared_holders['outrgpitem_set'].declared_holders['outrgpitem'].fields['in_rgp_item'].queryset = in_rgp_item_queryset
print(f"END:OutRGPEntryCollection.__init__") |
Beta Was this translation helpful? Give feedback.
I founded the solution
models.py