user908759
user908759

Reputation: 1355

django repeated data sometimes

I am getting repeated results from my queries. There are only a few of my results that are being repeated. I am using django 1.8 and sqlite as my database. The repeated results seem to be the same entry id #4 and id #14. I have checked with an sql lite browser and confirmed that there is only one entry for each ID. I am also using django_tables2.

Here is my models.py:

@python_2_unicode_compatible  # only if you need to support Python 2
class Project(models.Model):
    name = models.CharField(max_length=50)
    jobNumber = models.CharField(max_length=8)
    shopOut = models.DateTimeField(null=True)
    shopIn = models.DateTimeField(null=True)
    delivery = models.DateTimeField(null=True)
    job1 = models.CharField(max_length=50, null=True)
    job2 = models.CharField(max_length=50, null=True)
    job3 = models.CharField(max_length=50, null=True)
    contractor = models.ForeignKey(Contractor, on_delete=models.CASCADE, default=101)
    created_by = models.ForeignKey(User, related_name='Project_created_by')
    created_date = models.DateTimeField(auto_now_add=True)
    modified_by = models.ForeignKey(User, related_name='Project_modified_by')
    modified_date = models.DateTimeField(auto_now=True)
    assigned_to = models.ManyToManyField(User, related_name='Project_assigned_to')
    def __str__(self):
        return self.name
    def save(self, *args, **kwargs):
        if not self.id:
            self.created_by = User.objects.get(id=1)
            self.modified_by = User.objects.get(id=1)
            super(Project, self).save(*args, **kwargs)
            year = datetime.datetime.now().year
            self.jobNumber = '{}{:04d}'.format(year, self.id)
        self.modified_by = User.objects.get(id=1)
        super(Project, self).save(*args, **kwargs)

Here is my table.py

class ProjectTable(tables.Table):
    class Meta:
        model = Project
        exclude = ('shopOut', 'shopIn', 'delivery', 'job1', 'job2', 'job3', 'created_by', 'modified_by', 'modified_date')
        attrs = {"class": "paleblue"}

Here is my views.py

def indexV(request):
    model = Project.objects.values("id","name","jobNumber", "contractor", "assigned_to", "created_date")
    table = ProjectTable(model)
    RequestConfig(request).configure(table)
    return render(request, 'project/index.html', {'table': table})

Here is my index.html:

{% block content %}
    <h1>Projects</h1>
    {% render_table table %}
{% endblock %}

Please let me know if there is any other info that is needed. How do I remove the repeated entries in my query?

Upvotes: 0

Views: 78

Answers (1)

Sardorbek Imomaliev
Sardorbek Imomaliev

Reputation: 15390

Updated

If you really are sure that your data is valid, than calling only on your query should fix this. I think the problem is that you are giving list of dicts after calling values on queryset, but you need to provide a queryset to ProjectTable.

model = Project.objects.only("id","name","jobNumber", "contractor", "assigned_to", "created_date").distinct()

Upvotes: 1

Related Questions